import axios from 'axios'
import {ElMessage} from "element-plus";
//引入服务器地址
import host from './env.js'
//创建请求实例
const instance = axios.create({
  baseURL:host,//服务器地址
  timeout:5000//5s超时时间
})
//添加响应拦截器
instance.interceptors.response.use(
  function (response) {
    //2xx范围内的状态码都会触发该函数
    //对响应数据做点什么
    if (response.status == 200) {
      //获取接口数据
      let rs = response.data;
      if(rs.code==200){
        //将rs封装成promise对象返回
        return Promise.resolve(rs);
      }
        //不正常 弹框提示
      ElMessage.error(rs.msg)
    }
    return Promise.resolve({});
  },
  function (error) {
    //超出200范围的状态码都会触发该函数
    //对响应错误做点什么
    return Promise.reject(error);
  }
);
//对外暴漏的请求方法
export default {
  /**
   * get请求
   * @param url 接口的相对地址
   * @param params 请求的参数是一个对象。请求时会将对象中的属性拼接成字符串到地址栏上
   * @returns {Promise<axios.AxiosResponse<any>>} 请求的promise对象
   */
  get:function (url,params){
    return instance.get(url,{
      params
    })
  },
  /**
   * post 请求
   * @param url 接口的相对地址
   * @param data 请求数据
   */
  post(url,data){
    return instance.post(url,data)
  },
  /**
   * put 请求
   * @param url 接口的相对地址
   * @param data 请求数据
   * @returns {Promise<axios.AxiosResponse<any>>}
   */
  put(url,data){
    return instance.put(url,data)
  },
  /**
   * delete 请求
   * @param url 接口的相对地址
   * @param params 请求的参数是一个对象。请求时会将对象中的属性拼接成字符串到地址栏上
   * @returns {Promise<axios.AxiosResponse<any>>} 请求的promise对象
   */
  delete(url,params){
    return instance.delete(url,{
      params
    })
  }
}
